package qnb.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import qnb.dao.Course12Dao;
import qnb.entity.Course1;
import qnb.entity.Course2;
import qnb.service.Course12Service;
@Service
public class Course12ServiceImpl implements Course12Service  {
	@Autowired
	private Course12Dao dao;
	
	/**
	 * 添加课表（表头+表体）
	 * @param obj 表头
	 * @param list 表体
	 * @return int
	 */
	@Override
	public int insertCourse(Course1 obj, List<Course2> list) {
		int i=dao.insertCourse1(obj);
		 dao.insertCourse2(obj.getCourse1Id(), list);
		 return i;
	}
	
	/**
	 * 修改课表（表体+表头）
	 * @param obj
	 * @param list
	 * @return
	 */
	@Override
	public int updateCourse(Course1 obj, List<Course2> list) {
		 int i=dao.updateCourse1(obj);
		 //对于表体的修改，先删除之前的旧表体。再执行新增。（注：此方案不是最优方案）
		 //最优方案，应该 检出 集合中的表体数据，哪些是删除，那些是新增，那些是修改，针对性操作。
		 dao.dellCourse2(obj.getCourse1Id());
		 dao.insertCourse2(obj.getCourse1Id(), list);
		//以后优化提醒：注册被删除的数据，有没有被其他表引用。如果有，其他表会报错。
		 return i;
	}
	
	/**
	 * 删除指定课表（表头+表体）
	 * @param id
	 * @return int
	 */
	@Override
	public int dellCourse(int id) {
		int i= dao.dellCourse1(id);
		dao.dellCourse2(id);
		return i;
	}
	/**
	 * 表头：查询一个，通过主键
	 * @param id 主键 
	 * @return int
	 */
	public Course1 select1ById(int id) {
		return dao.select1ById(id);
	}
	/**
	 * 表头：查询
	 * @param where 条件
	 * @param oderby 排序
	 * @param page 页码
	 * @param pageSize 记录数/页
	 * @return List
	 */
	@Override
	public List<Course1> select(String where, String oderby, int page, int pageSize) {
		return dao.select1(where, oderby, page, pageSize);
	}
	/**
	 * 表头：查询总记录数
	 * @param where 条件
	 * @return int
	 */
	@Override
	public int select1Count(String where) {
		return dao.select1Count(where);
	}

	/**
	 * 表体：通过表头主键查询
	 * @param course1Id 表头主键
	 * @return List
	 */
	@Override
	public List<Course2> select2ByCourse1Id(int course1Id) {
		return dao.select2ByCourse1Id(course1Id);
	}

}
